package hcn.protocol.ods.checkAppointment.xml;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

/**
 * 申请单执行更新XML入参
 *
 * @author neoLin - 2023/01/30 15:48
 */
@XmlRootElement(name = "MsgBody")
public class UpdateApplyFormXmlRequest {

    /**
     * 患者基本信息
     */
    private Patient patient;

    /**
     * 就诊摘要
     */
    private Visit visit;

    /**
     * 检查状态信息
     */
    private ExamStatusInfo examStatusInfo;

    @XmlElement(name = "Patient")
    public Patient getPatient() {
        return patient;
    }

    public void setPatient(Patient patient) {
        this.patient = patient;
    }

    @XmlElement(name = "Visit")
    public Visit getVisit() {
        return visit;
    }

    public void setVisit(Visit visit) {
        this.visit = visit;
    }

    @XmlElement(name = "ExamStatusInfo")
    public ExamStatusInfo getExamStatusInfo() {
        return examStatusInfo;
    }

    public void setExamStatusInfo(ExamStatusInfo examStatusInfo) {
        this.examStatusInfo = examStatusInfo;
    }

    @XmlRootElement(name = "Patient")
    public static class Patient {
        /**
         * 业务系统患者档案ID
         */
        private String sourcePatientId;
        /**
         * 患者姓名
         */
        private String name;
        /**
         * 域ID
         */
        private String domainId;

        @XmlElement(name = "SourcePatientId")
        public String getSourcePatientId() {
            return sourcePatientId;
        }

        public void setSourcePatientId(String sourcePatientId) {
            this.sourcePatientId = sourcePatientId;
        }

        @XmlElement(name = "Name")
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @XmlElement(name = "DomainId")
        public String getDomainId() {
            return domainId;
        }

        public void setDomainId(String domainId) {
            this.domainId = domainId;
        }
    }



    @XmlRootElement(name = "Visit")
    public static class Visit {
        /**
         * 就诊流水号
         */
        private String visitId;
        /**
         * 患者类型代码
         */
        private String patientType;
        /**
         * 门（急）诊号
         */
        private String clinicId;
        /**
         * 住院号
         */
        private String hospizationId;
        /**
         * 就诊次数
         */
        private String visitTimes;

        @XmlElement(name = "VisitId")
        public String getVisitId() {
            return visitId;
        }

        public void setVisitId(String visitId) {
            this.visitId = visitId;
        }

        @XmlElement(name = "PatientType")
        public String getPatientType() {
            return patientType;
        }

        public void setPatientType(String patientType) {
            this.patientType = patientType;
        }

        @XmlElement(name = "ClinicId")
        public String getClinicId() {
            return clinicId;
        }

        public void setClinicId(String clinicId) {
            this.clinicId = clinicId;
        }

        @XmlElement(name = "HospizationId")
        public String getHospizationId() {
            return hospizationId;
        }

        public void setHospizationId(String hospizationId) {
            this.hospizationId = hospizationId;
        }

        @XmlElement(name = "VisitTimes")
        public String getVisitTimes() {
            return visitTimes;
        }

        public void setVisitTimes(String visitTimes) {
            this.visitTimes = visitTimes;
        }
    }

    /**
     * The type Exam status info.
     */

    @XmlRootElement(name = "ExamStatusInfo")
    public static class ExamStatusInfo {
        /**
         * 检查大项列表
         */
        private List<Item> items;
        /**
         * 电子申请单编号
         */
        private String requestId;
        /**
         * 就诊机构代码/开单机构代码
         */
        private String visitOrganization;
        /**
         * 操作日期
         */
        private String operatingDateTime;
        /**
         * 操作工号
         */
        private String operatingNumber;
        /**
         * 操作人姓名
         */
        private String operatingName;
        /**
         * 执行科室代码
         */
        private String executiveDeptCode;
        /**
         * 执行科室名称
         */
        private String executiveDeptName;
        /**
         * 病床号
         */
        private String sickbedId;
        /**
         * 病房号
         */
        private String sickRoomId;
        /**
         * 科室代码
         */
        private String deptCode;
        /**
         * 科室名称
         */
        private String deptName;
        /**
         * 病区代码
         */
        private String wardAreaCode;
        /**
         * 病区名称
         */
        private String wardAreaName;
        /**
         * 病床编码
         */
        private String sickbedNo;
        /**
         * 病房编号
         */
        private String sickRoomNo;

        @XmlElementWrapper(name = "ItemList")
        @XmlElement(name = "Item")
        public List<Item> getItems() {
            return items;
        }

        public void setItems(List<Item> items) {
            this.items = items;
        }

        @XmlElement(name = "RequestId")
        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        @XmlElement(name = "VisitOrganization")
        public String getVisitOrganization() {
            return visitOrganization;
        }

        public void setVisitOrganization(String visitOrganization) {
            this.visitOrganization = visitOrganization;
        }

        @XmlElement(name = "OperatingDateTime")
        public String getOperatingDateTime() {
            return operatingDateTime;
        }

        public void setOperatingDateTime(String operatingDateTime) {
            this.operatingDateTime = operatingDateTime;
        }

        @XmlElement(name = "OperatingNumber")
        public String getOperatingNumber() {
            return operatingNumber;
        }

        public void setOperatingNumber(String operatingNumber) {
            this.operatingNumber = operatingNumber;
        }

        @XmlElement(name = "OperatingName")
        public String getOperatingName() {
            return operatingName;
        }

        public void setOperatingName(String operatingName) {
            this.operatingName = operatingName;
        }

        @XmlElement(name = "ExecutiveDeptCode")
        public String getExecutiveDeptCode() {
            return executiveDeptCode;
        }

        public void setExecutiveDeptCode(String executiveDeptCode) {
            this.executiveDeptCode = executiveDeptCode;
        }

        @XmlElement(name = "ExecutiveDeptName")
        public String getExecutiveDeptName() {
            return executiveDeptName;
        }

        public void setExecutiveDeptName(String executiveDeptName) {
            this.executiveDeptName = executiveDeptName;
        }

        @XmlElement(name = "SickbedId")
        public String getSickbedId() {
            return sickbedId;
        }

        public void setSickbedId(String sickbedId) {
            this.sickbedId = sickbedId;
        }

        @XmlElement(name = "SickRoomId")
        public String getSickRoomId() {
            return sickRoomId;
        }

        public void setSickRoomId(String sickRoomId) {
            this.sickRoomId = sickRoomId;
        }

        @XmlElement(name = "DeptCode")
        public String getDeptCode() {
            return deptCode;
        }

        public void setDeptCode(String deptCode) {
            this.deptCode = deptCode;
        }

        @XmlElement(name = "DeptName")
        public String getDeptName() {
            return deptName;
        }

        public void setDeptName(String deptName) {
            this.deptName = deptName;
        }

        @XmlElement(name = "WardAreaCode")
        public String getWardAreaCode() {
            return wardAreaCode;
        }

        public void setWardAreaCode(String wardAreaCode) {
            this.wardAreaCode = wardAreaCode;
        }

        @XmlElement(name = "WardAreaName")
        public String getWardAreaName() {
            return wardAreaName;
        }

        public void setWardAreaName(String wardAreaName) {
            this.wardAreaName = wardAreaName;
        }

        @XmlElement(name = "SickbedNo")
        public String getSickbedNo() {
            return sickbedNo;
        }

        public void setSickbedNo(String sickbedNo) {
            this.sickbedNo = sickbedNo;
        }

        @XmlElement(name = "SickRoomNo")
        public String getSickRoomNo() {
            return sickRoomNo;
        }

        public void setSickRoomNo(String sickRoomNo) {
            this.sickRoomNo = sickRoomNo;
        }
    }

    @XmlRootElement(name = "Item")
    public static class Item {
        /**
         * 检查申请单号
         */
        private String itemCode;
        /**
         * 项目费用
         */
        private String itemCost;
        /**
         * 发票号码(申请单)
         */
        private String invoiceNo;
        /**
         * 检查状态编码
         */
        private String examStatusCode;
        /**
         * 检查状态名称
         */
        private String examStatusName;

        @XmlElement(name = "ItemCode")
        public String getItemCode() {
            return itemCode;
        }

        public void setItemCode(String itemCode) {
            this.itemCode = itemCode;
        }

        @XmlElement(name = "ItemCost")
        public String getItemCost() {
            return itemCost;
        }

        public void setItemCost(String itemCost) {
            this.itemCost = itemCost;
        }

        @XmlElement(name = "InvoiceNo")
        public String getInvoiceNo() {
            return invoiceNo;
        }

        public void setInvoiceNo(String invoiceNo) {
            this.invoiceNo = invoiceNo;
        }

        @XmlElement(name = "ExamStatusCode")
        public String getExamStatusCode() {
            return examStatusCode;
        }

        public void setExamStatusCode(String examStatusCode) {
            this.examStatusCode = examStatusCode;
        }

        @XmlElement(name = "ExamStatusName")
        public String getExamStatusName() {
            return examStatusName;
        }

        public void setExamStatusName(String examStatusName) {
            this.examStatusName = examStatusName;
        }
    }
}
